<?php

/*
 * This file is part of SwiftMailer.
 * (c) 2004-2009 Chris Corbyn
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * Creates filters for replacing needles in a string buffer.
 *
 * @package Swift
 * @author  Chris Corbyn
 */
class Swift_StreamFilters_StringReplacementFilterFactory implements Swift_ReplacementFilterFactory
{
	/** Lazy-loaded filters */
	private $_filters = array();

	/**
	 * Create a new StreamFilter to replace $search with $replace in a string.
	 *
	 * @param string $search
	 * @param string $replace
	 *
	 * @return Swift_StreamFilter
	 */
	public function createFilter($search, $replace)
	{
		if (!isset($this->_filters[$search][$replace])) {
			if (!isset($this->_filters[$search])) {
				$this->_filters[$search] = array();
			}

			if (!isset($this->_filters[$search][$replace])) {
				$this->_filters[$search][$replace] = array();
			}

			$this->_filters[$search][$replace] = new Swift_StreamFilters_StringReplacementFilter($search, $replace);
		}

		return $this->_filters[$search][$replace];
	}
}
